package com.hc.componentdocker;

public class DockerHelper {
    /**
     * -----特点-----
     * 1.标准化交付:可将应用程序打包成一个标准的运行单元，用于交付
     * 2.轻量级:容器包含了所有的运行所需的环境
     * 3.高可用:容器化的应用程序可在任何的Linux环境下运行
     * 4.隔离性:容器化的应用程序彼此之间隔离
     * -----应用场景-----
     * 1.Web应用打包和发布
     * 2.自动化测试
     * 3.部署和调整服务器数据库和其他应用后台
     * -----基本概念-----
     * 1.Docker Server:负责搭建，运行，分发Docker镜像
     * 2.Docker Client:负责处理各种请求，与Server通信
     * 3.Docker Daemon:Docker守护进程
     * 4.Docker Container:Docker容器
     * 5.Docker Image:Docker镜像
     * 6.Docker Registry:Docker镜像仓库
     * -----Linux下安装和基本使用-----
     *      yum install -y yum-utils device-mapper-persistent-data lvm2
     *      yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
     *      yum makecache fast
     *      yum install docker-ce (社区版docker)
     * 1.安装 yum -y install docker
     * 2.启动 systemctl start docker
     * 3.查看状态 systemctl status docker
     * 4.重启 systemctl restart docker
     * 5.关闭 systemctl stop docker
     * 6.开机自启 systemctl enable docker7
     * 7.查看细节 docker info
     * -----配置镜像加速-----
     * 1.vim /etc/docker/daemon.json
     * 2.{ "registry-mirrors": ["https://docker.1ms.run"]}
     * 3.systemctl daemon-reload
     * 4.systemctl restart docker
     * -----镜像相关命令-----
     * 1.查询远程镜像:docker search [option] name
     * 2.下载镜像:docker pull [option] name[:tag]
     * 3.查看本地镜像:docker images [option] name[:tag]
     * 4.删除镜像:docker rmi [option] image [name...]
     * -----容器相关命令-----
     * 1.查看实例:docker ps [option]
     *      -a所有容器
     *      -f根据条件过滤
     * 2.创建和启动容器:例如
     *  docker run --name nginx1 -p 81:80 -d nginx
     *  docker run --name mysql-container1 -e MYSQL_ROOT_PASSWORD=123456 -p 3307:3306 -d mysql:8.4.3
     *      --name给容器起名
     *      -p主机端口:容器端口
     *      -d镜像名
     *      -e参数配置
     *      -d后台运行并返回容器ID
     * 3.停止容器:docker stop 容器名
     * 4.重启容器:docker restart 容器名
     * 5.启动停止的容器:docker start 容器名
     * 6.登录容器:docker exec [option] 容器名 /bin/bash
     *      -d分离模式，在后台运行
     *      -i交互模式
     *      -t分配一个伪终端
     *      /bin/bash打开伪终端
     * 7.删除容器:docker rm [option] 容器名
     *      -f强制删除
     *      -i移除容器的网络连接
     *      -v删除与容器关联的数据卷
     * 8.文件拷贝:docker cp [option] 资源 容器:路径
     * 9.目录挂载:建立容器与主机的映射关系，达到访问主机数据的目的
     *      docker run -di --name 容器名 -v 主机目录:容器目录 --privileged=true 镜像
     *      数据卷:表示主机中的一个目录或文件且被容器绑定
     *      查看是否有数据卷:docker inspect 容器名
     * 10.容器保存成镜像:docker commit [option] 容器名
     *      -a镜像作者
     *      -c使用Dockerfile指令创建镜像
     *      -m描述
     *      -p将容器暂停，在commit时
     * 11.镜像打包:docker save -o 包名 镜像名
     * 12.解压镜像包:docker load [option]
     *      -i指定目标镜像包
     *      -q精简输出信息
     * -----防火墙相关命令-----
     * 查看开放的端口：firewall-cmd --list-ports
     * 开放端口：firewall-cmd --zone=public --add-port=8080/tcp --permanent
     * 关闭端口：firewall-cmd --zone=public --remove-port=8080/tcp --permanent
     * 查看防火墙状态：systemctl status firewalld
     * 13.Docker打包Springboot项目运行实战
     *      1.上传jar包
     *      2.创建Dockerfile
     *          #基础镜像
     *          FROM openjdk:11-jdk
     *          #镜像打包
     *          COPY /opt/component-docker-0.0.1-SNAPSHOT.jar /app.jar
     *          #暴露端口
     *          EXPOSE 8080
     *          #执行jar
     *          CMD java -jar /app.jar
     *      3.docker build -t 镜像名:版本 -f Dockerfile .
     *          -f指定Dockerfile文件所在路径
     *      4.docker run --name 容器名 -p:主机端口:容器端口 -d 镜像名:版本号
     */
}
